home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1998 January / Macworld (1998-01).dmg / Shareware World / Info / For Developers / Utils / Sources / main.c next >
Encoding:
C/C++ Source or Header  |  1997-10-28  |  2.8 KB  |  165 lines  |  [TEXT/MMCC]

  1. #include <Types.h>
  2. #include <Memory.h>
  3. #include <Quickdraw.h>
  4. #include <Fonts.h>
  5. #include <Events.h>
  6. #include <Menus.h>
  7. #include <Windows.h>
  8. #include <TextEdit.h>
  9. #include <Dialogs.h>
  10. #include <OSUtils.h>
  11. #include <ToolUtils.h>
  12. #include <SegLoad.h>
  13. #include <Resources.h>
  14. #include <Devices.h>
  15.  
  16.  
  17. #ifndef _LATITUDE_
  18. #include <LGLatitude.h>
  19. #endif
  20.  
  21. #define NIL NULL
  22. #define False  0
  23. #define True   1
  24.  
  25. #ifdef _LATITUDE_
  26. #define QD(x)    x
  27. #else
  28. #define QD(x)    qd.x
  29. #endif
  30.  
  31. void InitManagers (void);
  32. Boolean DoCommand(long menu_result);
  33.  
  34. MenuHandle filemh, applemh;
  35.  
  36. #define APPLE_MENUID    128
  37. #define APPLE_ABOUT_ITEM 1
  38. #define FILE_MENUID    130
  39. #define FILE_QUIT_ITEM 1
  40.  
  41. #define ABOUT_UTILS_ALERT    128
  42.  
  43.  
  44. #ifndef _LATITUDE_
  45. long 
  46. main(void)
  47. #else
  48. long
  49. main (int argc, char *argv[])
  50. #endif
  51. {
  52.    EventRecord myEvent;
  53.    WindowPtr testwin;
  54.    Boolean quitTime;
  55.    unsigned long menu_result;
  56.    short item_hit;
  57.    unsigned char the_char;
  58.  
  59.  
  60. #ifdef _LATITUDE_
  61.    LG_APP_INFO_BLOCK info;
  62.  
  63.    info.flags = LG_APP_INFO_SIGNATURE | LG_APP_INFO_CLASSNAME;
  64.    info.signature = QUADCONST('u','t','i','l');
  65.    info.classname = "Latitude";
  66.  
  67.    lg_latitude_init(argc, argv, &info);
  68. #endif
  69.  
  70.    InitManagers();
  71.  
  72.    filemh = GetMenu(FILE_MENUID);
  73.    applemh = GetMenu(APPLE_MENUID);
  74.    AppendResMenu(applemh, QUADCONST('D','R','V','R'));
  75.    InsertMenu(applemh, 0);
  76.    InsertMenu(filemh, 0);
  77.    DrawMenuBar();
  78.  
  79.    quitTime = False;
  80.  
  81.    while (!quitTime)
  82.    {
  83.         if (!WaitNextEvent(everyEvent, &myEvent, 10, (RgnHandle) NULL))
  84.             continue;
  85.             
  86.         switch (myEvent.what)
  87.         {
  88.             case mouseDown:
  89.                 item_hit = FindWindow(myEvent.where, &testwin);
  90.                 switch(item_hit)
  91.                 {
  92.                     case inMenuBar:
  93.                         menu_result = MenuSelect(myEvent.where);
  94.                         quitTime = DoCommand(menu_result);
  95.                         break;
  96.                     default:
  97.                         break;
  98.                 }
  99.                 break;
  100.             case keyDown:
  101.             case autoKey: 
  102.                 the_char = myEvent.message & charCodeMask;
  103.                 if ((myEvent.modifiers & cmdKey) != 0) 
  104.                     quitTime = DoCommand(MenuKey(the_char));
  105.                 break;
  106.                         
  107.             default:
  108.                 break; /* do nothing */
  109.            } 
  110.    } /* while */ 
  111.  
  112.    return (0);
  113.  
  114. }  /* main */
  115.  
  116.  
  117. void 
  118. InitManagers (void)
  119. {
  120.    MoreMasters();
  121.  
  122.    InitGraf(&QD(thePort));
  123.    InitFonts();
  124.    InitWindows();
  125.    FlushEvents(everyEvent,0);
  126.    InitMenus();
  127.    TEInit();
  128.    InitDialogs(NULL);
  129.    InitCursor();
  130.  
  131.    return; 
  132. } /* InitManagers */
  133.  
  134. Boolean 
  135. DoCommand(long menu_result)
  136. {
  137.     Str255 name;
  138.     Boolean quit_selected = False;
  139.     short menu_item;
  140.     
  141.     menu_item = LoWord(menu_result);
  142.     switch (HiWord(menu_result)) 
  143.     {
  144.         case APPLE_MENUID:
  145.             if (menu_item == APPLE_ABOUT_ITEM)
  146.             {
  147.                 Alert(ABOUT_UTILS_ALERT, NULL);
  148.             }
  149.             else
  150.             {
  151.                 GetMenuItemText(applemh, menu_item, name);
  152.                 OpenDeskAcc(name);
  153.             }
  154.             break;
  155.         case FILE_MENUID:
  156.             quit_selected = (menu_item == FILE_QUIT_ITEM);
  157.             break;
  158.         default:
  159.             break;
  160.     }    
  161.     
  162.     HiliteMenu(0);
  163.     return quit_selected;
  164. }
  165.